분산과 표준편차

샘플 자료의 분포나 확률 분포를 묘사하는 가장 대표적인 값은 평균 혹은 기댓값이다.

이와 함께 많이 쓰이는 대표값은 분산(variance) 또는 표준편차(standard deviation)이다. 평균이나 기댓값이 분포의 모양에서 위치를 대표하는 것이라면 분산은 분포의 폭(width)을 대표하는 값이다. 표준 편차는 분산에 대한 양의 제곱근(square root)값이다.

$$ \text{표준 편차} = \sqrt{\text{분산}} $$

분산도 평균과 마찬가지로 자료 값 집합에 대한 샘플 분산과 확률 분포에 대한 분산을 정의할 수 있다.

샘플 분산

샘플 분산은 주어진 자료 값의 집합에서 다음과 같은 식으로 구한다. 식에서 $x_i$는 $N$개의 자료 중 $i$번재의 자료를 나타내고 $m$은 샘플 평균이다.

$$ s^2 = \dfrac{1}{N}\sum_{i=1}^{N} (x_i-m)^2 $$

In [146]:
%%tikz -p pgfplots,pgffor -s 600,300
\begin{axis}[hide axis, width=400pt, height=200pt, line width=2pt, ymax=0.25]
\addplot[domain=-1:4,samples=100]{exp(-(x-0)^2 / (2^2)) / (2 * sqrt(2*pi))};
\foreach \x in {-0.7, -0.5, -0.35, -0.21, -0.11, 0, 0.14, 0.19, 0.3, 0.5, 0.8, 1.0, 1.5, 1.9, 2.4} {
  \edef\temp{\noexpand\fill (axis cs:\x, 0.02) circle (3pt);}\temp
}
\node at (axis cs:0,0.23) {$m$};
\draw[line width=1pt, dashed](axis cs:0,-0.1) -- (axis cs:0,0.22);
\node at (axis cs:1,0.11) {$x_i$};
\draw[line width=1pt, dashed](axis cs:1,-0.1) -- (axis cs:1,0.1);
\draw[line width=1pt, <->](axis cs:0,0.05) -- (axis cs:1,0.05);
\end{axis}


위의 그림에서 볼 수 있듯이 이 식은 자료값과 평균 사이의 거리를 의미한다. 다만 자료값이 평균보다 작을 때는 음수가 나오므로 제곱을 하여 모두 양수로 만들어 준 것이다.

위 식에서 구한 샘플 분산은 정확하게 말하면 편향 오차를 가진 편향 샘플 분산(biased sample variance)이다. 이와 대조되는 비편향 샘플 분산은 다음과 같이 구한다.

$$ s^2_{\text{unbiased}} = \dfrac{1}{N-1}\sum_{i=1}^{N} (x_i-m)^2 $$

샘플 분산의 편향 오차에 대해서는 확률 분포의 분산과 같이 이후에 다룬다.

biased는 오차가 있고 unbiased는 오차가 없다.

확률 분포의 분산

확률 분포는 확률 밀도 함수 $f(x)$로 분포 전체의 모양을 정확하게 정의할 수 있으므로 다음과 같이 이론적인 분산을 구할 수 있다.

분산을 구하는 연산자는 영어 Variance를 따서 $\text{Var}[\cdot]$로 표기하고 분산은 $\sigma^2$으로 표기한다.

$$ \sigma^2 = \text{Var}[X] = \text{E}[(X - \mu)^2] = \int_{-\infty}^{\infty} (x - \mu)^2 f(x)dx$$

이산 확률 변수의 경우에는 다음과 같이 확률 질량 함수를 사용하여 분산을 구한다.

$$ \sigma^2 = \sum (x - \mu)^2 f(x)$$

분산의 성질

분산은 다음과 같은 성질을 만족한다.

  • 0 또는 양수 $$ \text{Var}[X] \geq 0 $$

  • 랜덤 변수가 아닌 고정된 값 $c$에 대해 $$ \text{Var}[c] = 0 $$ $$ \text{Var}[cX] = c^2 \text{Var}[X] $$

또한 기댓값의 성질을 이용하여 다음 성질을 증명할 수 있다.

$$ \text{Var}[X] = \text{E}[X^2] - (\text{E}[X])^2 = \text{E}[X^2] - \mu^2$$

(증명)

$$ \begin{eqnarray} \text{Var}[X] &=& \text{E}[(X - \mu)^2] \\ &=& \text{E}[X^2 - 2\mu X + \mu^2] \\ &=& \text{E}[X^2] - 2\mu\text{E}[X] + \mu^2 \\ &=& \text{E}[X^2] - 2\mu^2 + \mu^2 \\ &=& \text{E}[X^2] - \mu^2\\ \end{eqnarray} $$

샘플 평균의 분산

확률 변수 $X$의 샘플 평균 $\bar{X}$도 일종의 확률 변수이고 그 기댓값 $\text{E}[\bar{X}]$은 원래 확률 변수 $X$의 기댓값 $\text{E}[{X}]$과 일치한다는 것을 아래의 노트북에서 증명한 적이 있다.

$$ \text{E}[\bar{X}] = \text{E}[{X}]$$

그럼 샘플 평균$\bar{X}$의 분산 $\text{Var}[\bar{X}]$은 원래 확률 변수 $X$의 분산 $\text{Var}[{X}]$과 어떤 관계가 있을까?

우선 개별 샘플에 대한 확률 변수 $X_i$가 서로 독립이라고 가정하자

$$ \text{E}\left[ (X_i-\mu)(X_j-\mu) \right] = 0 \;\; \text{ if i $\neq$ j} $$

또한 개별 샘플에 대한 확률 변수 $X_i$의 기댓값과 분산은 원래 확률 변수 $X$와 같다.

두 분산 사이에는 다음과 같은 관계가 있음을 증명할 수 있다.

$$ \begin{eqnarray} \text{Var}[\bar{X}] &=& \text{Var} \left[ \dfrac{1}{N} \sum_{i=1}^N X_i \right] \\ &=& \text{E} \left[ \left( \dfrac{1}{N} \sum_{i=1}^N X_i - \mu \right)^2 \right] \\ &=& \text{E} \left[ \left( \dfrac{1}{N} \sum_{i=1}^N (X_i - \mu) \right)^2 \right] \\ &=& \text{E} \left[ \dfrac{1}{N^2} \sum_{i=1}^N \sum_{j=1}^N (X_i - \mu) (X_j - \mu) \right] \\ &=& \text{E} \left[ \dfrac{1}{N^2} \sum_{i=1}^N (X_i - \mu)^2 \right] \\ &=& \text{E} \left[ \dfrac{1}{N} (X - \mu)^2 \right] \\ &=& \dfrac{1}{N} \text{Var}[X] = \dfrac{\sigma^2}{N} \end{eqnarray} $$

확률 변수의 독립에 관한 내용은 다음 노트북을 참조한다.

샘플 분산 $s^2$의 기대값을 구하면 다음과 같이 이론적인 분산 $\sigma^2$의 $\dfrac{N - 1}{N}$ 배임을 알 수 있다.

$$ \begin{eqnarray} \text{E}[s^2] &=& \text{E} \left[ \dfrac{1}{N}\sum_{i=1}^N (X_i - \bar{X})^2 \right] = \text{E} \left[ \dfrac{1}{N}\sum_{i=1}^N \left\{ (X_i -\mu) - (\bar{X} - \mu) \right \}^2 \right] \\ &=& \text{E} \left[ \dfrac{1}{N}\sum_{i=1}^N \left\{ (X_i -\mu)^2 - 2 (X_i -\mu)(\bar{X} - \mu) + (\bar{X} - \mu)^2 \right \} \right] \\ &=& \text{E} \left[ \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu)^2 \right] - 2 \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu)(\bar{X} - \mu) } \right] + \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (\bar{X} - \mu)^2 } \right] \end{eqnarray} $$

이 때 $$ \text{E} \left[ \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu)^2 \right] = \text{Var}[X] = \sigma^2 $$

$$ \begin{eqnarray} \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu)(\bar{X} - \mu) } \right] &=& \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu) \left( \dfrac{1}{N} \sum_{j=1}^N X_j - \mu \right) } \right] \\ &=& \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (X_i -\mu) \left( \dfrac{1}{N} \sum_{j=1}^N ( X_j - \mu ) \right) } \right] \\ &=& \text{E} \left[ { \dfrac{1}{N^2} \sum_{i=1}^N \sum_{j=1}^N (X_i -\mu) ( X_j - \mu )} \right] \\ &=& \dfrac{1}{N} \text{Var}[X] = \dfrac{\sigma^2}{N} \end{eqnarray} $$$$ \text{E} \left[ { \dfrac{1}{N} \sum_{i=1}^N (\bar{X} - \mu)^2 } \right] = \dfrac{1}{N} \text{Var}[X] = \dfrac{\sigma^2}{N} $$

따라서

$$ \text{E}[s^2] = \sigma^2 - \dfrac{2\sigma^2}{N} + \dfrac{\sigma^2}{N} = \dfrac{N-1}{N}\sigma^2 $$

따라서 샘플 분산의 기대값이 정확하게 $\sigma^2$이 되려면 분모가 $N$이 아니라 $N-1$이 되어야 한다.

$$ \sigma^2 = \dfrac{N}{N-1} \text{E}[s^2] = \dfrac{N}{N-1} \text{E} \left[ \dfrac{1}{N} \sum (X_i-\bar{X})^2 \right] = \text{E} \left[ \dfrac{1}{N-1} \sum (X_i-\bar{X})^2 \right] = \text{E} \left[ s^2_{\text{unbiased}} \right] $$

Python을 사용한 계산

Python에서 샘플 분산과 샘플 표준 편차는 numpy의 다음 함수들을 사용한다.


In [1]:
sp.random.seed(0)
x = sp.stats.norm(0, 2).rvs(1000)   # mean=0, standard deviation=2

In [2]:
np.var(x)


Out[2]:
3.8969378252486169

In [3]:
np.var(x, ddof=1)   # unbiased variance


Out[3]:
3.9008386639125292

In [4]:
np.var(x, ddof=2)


Out[4]:
3.9047473198883935